package cn.vehicle.service;

import cn.vehicle.domains.bo.QueryPermissionBo;
import cn.vehicle.domains.entity.SysPermissionEntity;

import java.util.List;

/**
 * 系统权限服务接口
 * <p>
 * 定义系统权限相关的核心业务操作，包括新增、修改、删除、查询等功能。
 * 该接口作为 Biz 层与数据库持久层之间的抽象层，为权限管理模块提供统一的数据访问规范。
 * </p>
 *
 * <p>主要职责：</p>
 * <ul>
 *   <li>定义权限表（sys_permission）的基础 CRUD 操作；</li>
 *   <li>支持根据条件查询权限列表；</li>
 *   <li>提供通过主键ID查询权限详情的方法。</li>
 * </ul>
 */
public interface SysPermissionService {
    /**
     * 新增权限
     *
     * @param sysPermissionEntity 权限实体对象，包含权限名称、类型、路径等信息
     */
    void addPermission(SysPermissionEntity sysPermissionEntity);

    /**
     * 更新权限信息
     *
     * @param updateEntity 更新的权限实体对象，需包含主键ID
     */
    void updatePermission(SysPermissionEntity updateEntity);

    /**
     * 删除权限
     *
     * @param id 权限主键ID
     */
    void deletePermission(Long id);

    /**
     * 查询权限列表
     *
     * @param queryPermissionBo 查询条件封装对象
     * @return 权限实体列表
     */
    List<SysPermissionEntity> selectPermissionList(QueryPermissionBo queryPermissionBo);

    /**
     * 根据ID查询权限详情
     *
     * @param id 权限主键ID
     * @return 权限实体对象
     */
    SysPermissionEntity getPermissionById(Long id);
}
